#include<iostream>
#include<unistd.h>
#include<signal.h>
using namespace std;
//和signal一样，只是更牛逼了

void sigcb(int signo)
{
    cout<<"获取到一个信号"<<signo<<endl;
    while(true)
    {
        //处理方法
        sigset_t pending;
        sigemptyset(&pending);

        sigpending(&pending);
 
        for (int i = 31; i > 0; i--)
        {
            if (sigismember(&pending, i))
                std::cout << "1";
            else
                std::cout << "0";
        }
        std::cout << std::endl;

        sleep(1);
    }
}

int main()
{
    struct sigaction act,oact;
    act.sa_handler = sigcb;
    act.sa_flags = 0;
    sigemptyset(&(act.sa_mask));//还没设置到内核
    sigaddset(&(act.sa_mask),3);
    sigaddset(&(act.sa_mask),4);
    sigaddset(&(act.sa_mask),5);
    sigaddset(&(act.sa_mask),6);

    sigaction(2,&act,&oact);
    //将2号信号的捕捉方法，设置到内核中！

    while(true)
    {
        cout<<"我是一个进程"<<getpid()<<endl;
        sleep(1);
    }
    return 0;
}